package org.yinxianren.www.study_02.study.java8;

import org.junit.Test;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.Stream;

public class Study02 {

    /**
     * 统计有多少个单词
     */
    @Test
    public void study_01(){
        long uniqueWords=0;
        try(Stream<String> lines = Files.lines(Paths.get("C:\\Users\\root\\Desktop\\test\\test.log"), Charset.defaultCharset())){
            uniqueWords=lines.flatMap(line-> Arrays.stream(line.split(" ")))
                    .distinct()
                    .count();
            System.out.print("uniqueWords:"+uniqueWords);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//***********************************************************************************************************************************
    /**
     * 创建无限流
     *  Stream API 提供了两个静态方法来从函数生成流： Stream.iterate 、 Stream.generate;
     *  一般来说，应该使用limit(n) 来对这种无限流加以限制，以避免打印无穷多个值
     */
    @Test
    public void study_02(){
        //1.迭代
        Stream.iterate(10,n->n+2)
                .limit(10)
                .forEach(System.out::println);
    }



//***********************************************************************************************************************************



//***********************************************************************************************************************************







    //***********************************************************************************************************************************
}
